package com.bird.设计模式.行为型.责任链模式.流程审批功能;

/**
 * @data 2022/10/5 10:22
 * @author: bird
 * @description: 责任链的客户端：就是实例化一个处理器链。
 * <p>
 * 意思就是将手记的节点和视频的节点连接起来，形成一个链条，就是责任链。
 */
public class TestClient {

    public static void main(String[] args) {
        // 第一步：先创建链中的节点。两个审计员  分别是视频和手记审计者。
        Approver articleApprover = new ArticleApprover();
        Approver vioderApprover = new VideoApprover();

        // 第二步：构建请求者，
        Course course = new Course();
        course.setName("java-设计模式");
        course.setArticle("java-设计模式-手记");
      course.setVideo("java-设计模式-视频");

        /*客户端可以自己给这个链条中的节点，调整顺序 先执行哪一个后执行哪一个.
        * 课程发布 需要经过两个审计者 一个是手记设计者，一个是课程审计者。必须都审计通过
        * 这个课程才能发布。
        * */


        // 先处理课程是否含有手记。每个节点都有两个功能，第一个，处理这个请求者，第二个，是否交给下一个节点处理。
        //第三步: 将节点连接起来，排好顺序，形成一个链条。
        articleApprover.setNextApprover(vioderApprover);
        //第四步：从前往后处理 请求者。
        articleApprover.deploy(course);




    }
}
